<?php
require_once('LoginModel.php');
require_once('IView.php');

class LoginController
{
	/**
	 * Skapa kontroll
	 * @return HTML string
	 */
	public static function CreateControl(IView $lv)
	{
		$lm = new LoginModel();
		
		$body = "";
		
		// Kollar om användaren försökt att logga in
		if ($lv->TriedToLogin()) 
		{
			// Logga in med angivet användarnamn och lösenord
			$lm->Login($lv->GetUserName(), $lv->GetPassword());
			
			if($lm->IsLoggedIn())
			{
				$body .= $lv->EncapsulateString("p", LoginView::LOGGED_IN_AS . $lv->GetUserName());
				
				// Kollar om användaren vill fortsätta vara inloggad
				if($lv->RememberMe(60))
					$body .= $lv->EncapsulateString("p", LoginView::REMEMBER_LOGIN);
				else 
					$body .= $lv->EncapsulateString("p", LoginView::FORGET_LOGIN);
				
				$body .= $lv->CreateLogoutBox();
			}
			else
			{
				$body .= $lv->EncapsulateString("p", LoginView::WRONG_LOGIN);
				$body .= $lv->CreateLoginBox();
			}
		}
		// Kollar om användaren försökt att logga ut
		else if($lv->TriedToLogout())
		{
			// Logga ut
			$lm->Logout();
			
			// Ta bort cookie (automatisk inloggning)
			$lv->ForgetMe();
			
			// Kontrollera att användaren loggats ut
			if($lm->IsLoggedIn() == false)
			{
				$body .= $lv->EncapsulateString("p", LoginView::LOGGED_OUT);
				$body .= $lv->CreateLoginBox();
			}
		}
		// Om användaren varken försökt logga in eller ut
		else
		{
			// Om användaren har uppgifter sparade
			$login = $lv->GetSavedLogin();
			
			if($login != null)
			{
				// Logga in med sparade uppgifter. Användarnamn på index 0, lösen på index 1
				$lm->Login($login[0], $login[1]);
				
				// Kontrollera att användaren nu är inloggad
				if($lm->IsLoggedIn())
				{
					$body .= $lv->EncapsulateString("p", LoginView::LOGGED_IN_AS . $login[0]);
					$body .= $lv->CreateLogoutBox();
				}
				else
				{
					$body .= $lv->EncapsulateString("p", LoginView::AUTO_LOGIN_FAILED);
					$body .= $lv->CreateLoginBox();
				}
			}
			// Skapa inloggningsruta om ej uppgifter finns sparade
			else
			{
				$body .= $lv->EncapsulateString("p", LoginView::NOT_LOGGED_IN);
				$body .= $lv->CreateLoginBox();
			}
		}
		return $body;
	}
}
?>